<?php

/**
 * Diese Factory Klasse dient der DAO Singlton Verwaltung. Wenn
 * eine DAO angefordert wird, dann wird ein Singleton dieser DAO un einem internen statischen
 * Array gespeichert.
 * 
 * Wenn man die UserDAO laden möchte, dann unktioniert das so:
 *   $dao = DAOFactory::getInstance('User');
 * 
 * @author Shane
 *
 */
class DAOFactory {
	
	// Hie werden die Instanze der DAOs gespeichert
	private static $instances = array();
	
	/**
	 * Diese Funktion gibt die Singleton Instanz der
	 * gewünschten DAO zurück. Wenn es von der DAO
	 * noch keine Instanz gibt, dann wird diese entsprechend erzeugt
	 * 
	 * @param string $dao_name
	 */
	public static function getInstance($dao_name) {
		
		// Wenn die DAO noch nicht instantiirt wurde
		if (!isset($instances[$dao_name])) {
			// debug
			if (DEBUG_ENABLED)
				DebugQuery::getInstance()->append("Creating instance of: %s\n", $dao_name.'DAO');
				
			// erzeuge eine Instanz der entsprechenden DAO 
			$class_name = $dao_name.'DAO';
			$instances[$dao_name] = new $class_name();
		}
		
		return $instances[$dao_name];
	}
}

?>